'use strict';
var {
    AsyncStorage,
} = require('react-native');

var KEY_TOKEN='@user:stoken';
var KEY_USER='@user:user';

var cache;

/**
 * 从本地存储读取token和user数据
 */
async function dataFromLocal(){
    var [[, stoken], [, user]]=await AsyncStorage.multiGet([KEY_TOKEN, KEY_USER]);
    if(stoken){
        return {stoken:stoken, user:JSON.parse(user)};
    }
    return null;
}

/**
 * 从本地初始化数据
 */

async function init(){
    cache = await dataFromLocal();
    return data();
}

/**
 * 返回数据
 */
function data(){
    return cache || {};
}

/**
 * 保存数据
 */
function saveTokenAndUser(stoken, user){
    return AsyncStorage.multiSet([[KEY_TOKEN, stoken], [KEY_USER, JSON.stringify(user)]])
                       .then((data)=>{
                           cache={stoken:stoken, user:user};
                           return cache;
                       });
}

//删除数据
function clearTokenAndUser(){
    return AsyncStorage.multiRemove([KEY_TOKEN, KEY_USER]);
}

module.exports={init, data, saveTokenAndUser, clearTokenAndUser};
